package dao

import (
	"time"
)

// 这是 PmsProduct 的全局公开dao对象，被service层调用!
var PmsProductDao = pmsProductDao{}

// 这是 pms_product表 的实体类
type PmsProduct struct {
	AlbumPics                  string    `json:"album_pics" form:"album_pics" v:"album_pics"`          // 画册图片，连产品图片限制为5张，以逗号分割
	BrandId                    int64     `json:"brand_id" form:"brand_id" v:"brand_id"`                // 这是一个逻辑外键,关联pms_brand(id)
	BrandName                  string    `json:"brand_name" form:"brand_name" v:"brand_name"`          // 品牌名称
	DeleteStatus               int32     `json:"delete_status" form:"delete_status" v:"delete_status"` // 删除状态：0-&gt;未删除；1-&gt;已删除
	Description                string    `json:"description" form:"description" v:"description"`       // 商品描述
	DetailDesc                 string    `json:"detail_desc" form:"detail_desc" v:"detail_desc"`
	DetailHtml                 string    `json:"detail_html" form:"detail_html" v:"detail_html"`                      // 产品详情网页内容
	DetailMobileHtml           string    `json:"detail_mobile_html" form:"detail_mobile_html" v:"detail_mobile_html"` // 移动端网页详情
	DetailTitle                string    `json:"detail_title" form:"detail_title" v:"detail_title"`
	FreightTemplateId          int64     `json:"freight_template_id" form:"freight_template_id" v:"freight_template_id"` // 这是一个逻辑外键,关联pms_freight_template(id)
	GiftGrowth                 int32     `json:"gift_growth" form:"gift_growth" v:"gift_growth"`                         // 赠送的成长值
	GiftPoint                  int32     `json:"gift_point" form:"gift_point" v:"gift_point"`                            // 赠送的积分
	Id                         int64     `json:"id" form:"id" v:"id"`
	Keywords                   string    `json:"keywords" form:"keywords" v:"keywords"`
	LowStock                   int32     `json:"low_stock" form:"low_stock" v:"low_stock"` // 库存预警值
	Name                       string    `json:"name" form:"name" v:"name"`
	NewStatus                  int32     `json:"new_status" form:"new_status" v:"new_status"` // 新品状态:0-&gt;不是新品；1-&gt;新品
	Note                       string    `json:"note" form:"note" v:"note"`
	OriginalPrice              float64   `json:"original_price" form:"original_price" v:"original_price"` // 市场价
	Pic                        string    `json:"pic" form:"pic" v:"pic"`
	PreviewStatus              int32     `json:"preview_status" form:"preview_status" v:"preview_status"` // 是否为预告商品：0-&gt;不是；1-&gt;是
	Price                      float64   `json:"price" form:"price" v:"price"`
	ProductAttributeCategoryId int64     `json:"product_attribute_category_id" form:"product_attribute_category_id" v:"product_attribute_category_id"` // 这是一个逻辑外键,关联pms_product_attribute_category(id)
	ProductCategoryId          int64     `json:"product_category_id" form:"product_category_id" v:"product_category_id"`                               // 这是一个逻辑外键,关联pms_product_category(id)
	ProductCategoryName        string    `json:"product_category_name" form:"product_category_name" v:"product_category_name"`                         // 商品分类名称
	ProductSn                  string    `json:"product_sn" form:"product_sn" v:"product_sn"`                                                          // 货号
	PromotionEndTime           time.Time `json:"promotion_end_time" form:"promotion_end_time" v:"promotion_end_time"`                                  // 促销结束时间
	PromotionPerLimit          int32     `json:"promotion_per_limit" form:"promotion_per_limit" v:"promotion_per_limit"`                               // 活动限购数量
	PromotionPrice             float64   `json:"promotion_price" form:"promotion_price" v:"promotion_price"`                                           // 促销价格
	PromotionStartTime         time.Time `json:"promotion_start_time" form:"promotion_start_time" v:"promotion_start_time"`                            // 促销开始时间
	PromotionType              int32     `json:"promotion_type" form:"promotion_type" v:"promotion_type"`                                              // 促销类型：0-&gt;没有促销使用原价;1-&gt;使用促销价；2-&gt;使用会员价；3-&gt;使用阶梯价格；4-&gt;使用满减价格；5-&gt;限时购
	PublishStatus              int32     `json:"publish_status" form:"publish_status" v:"publish_status"`                                              // 上架状态：0-&gt;下架；1-&gt;上架
	RecommendStatus            int32     `json:"recommend_status" form:"recommend_status" v:"recommend_status"`                                        // 推荐状态；0-&gt;不推荐；1-&gt;推荐
	Sale                       int32     `json:"sale" form:"sale" v:"sale"`                                                                            // 销量
	ServiceIds                 string    `json:"service_ids" form:"service_ids" v:"service_ids"`                                                       // 以逗号分割的产品服务：1-&gt;无忧退货；2-&gt;快速退款；3-&gt;免费包邮
	Sort                       int32     `json:"sort" form:"sort" v:"sort"`                                                                            // 排序
	Stock                      int32     `json:"stock" form:"stock" v:"stock"`                                                                         // 库存
	SubTitle                   string    `json:"sub_title" form:"sub_title" v:"sub_title"`                                                             // 副标题
	Unit                       string    `json:"unit" form:"unit" v:"unit"`                                                                            // 单位
	UsePointLimit              int32     `json:"use_point_limit" form:"use_point_limit" v:"use_point_limit"`                                           // 限制使用的积分数
	VerifyStatus               int32     `json:"verify_status" form:"verify_status" v:"verify_status"`                                                 // 审核状态：0-&gt;未审核；1-&gt;审核通过
	Weight                     float64   `json:"weight" form:"weight" v:"weight"`                                                                      // 商品重量，默认为克

}

// 注意:这是 PmsProduct 的私有dao对象，只能在dao层内使用!
type pmsProductDao struct {
	InsertTemplate  func(arg PmsProduct) (int64, error)                               //插入一条记录
	UpdateTemplate  func(arg PmsProduct) (int64, error)                               //更新一条记录
	DeleteTemplate  func(id int64) (int64, error)                                     `args:"id"`                         //根据传入的主键删除一条记录
	SelectTemplate  func(id int64) (PmsProduct, error)                                `args:"id"`                         //根据传入的主键获取一条记录
	List            func(keyword string, pageNum, pageSize int) ([]PmsProduct, error) `args:"keyword,page_num,page_size"` //模糊分页查询
	UpdateBrandName func(id int64, brandName string) (int64, error)                   `args:"id,brand_name"`
}

/*
// 这是 pms_product 表的Postman测试参数
// 该结构体中的字段就是: 前后端交互的json字段!
type PmsProductPostman struct {
album_pics
brand_id
brand_name
delete_status
description
detail_desc
detail_html
detail_mobile_html
detail_title
freight_template_id
gift_growth
gift_point
id
keywords
low_stock
name
new_status
note
original_price
pic
preview_status
price
product_attribute_category_id
product_category_id
product_category_name
product_sn
promotion_end_time
promotion_per_limit
promotion_price
promotion_start_time
promotion_type
publish_status
recommend_status
sale
service_ids
sort
stock
sub_title
unit
use_point_limit
verify_status
weight

}*/

// 这是 pms_product 表的批量请求参数
type PmsProductReq struct {
	List []PmsProduct `json:"list" form:"list"`
}
